package set_map.leetcode;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * 牛客网的坏键盘问题
 * @author yuisama
 * @date 2022/01/12 21:03
 **/
public class BadKeyBoard {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 期望输入的
        String expectedStr = null;
        // 实际输入的
        String actualStr = null;
        while (scanner.hasNext()) {
            expectedStr = scanner.next();
            actualStr = scanner.next();
        }
        // 将所有字符串转为全大写
        expectedStr = expectedStr.toUpperCase();
        actualStr = actualStr.toUpperCase();
        // 使用Set存储实际输入的字符
        Set<Character> actualSet = new HashSet<>();
        for (int i = 0; i < actualStr.length(); i++) {
            actualSet.add(actualStr.charAt(i));
        }
        // 遍历期望字符串，所谓的坏键就是Set中不存在而期望中有的字符
        // 过滤重复元素
        // 7_This_is_a_test - 期望输入
        // _hs_s_a_es - 实际输入
        Set<Character> ret = new HashSet<>();
        for (int i = 0; i < expectedStr.length(); i++) {
            char c = expectedStr.charAt(i);
            if (!actualSet.contains(c)) {
                // 此时c不存在！！
                // 只有当set集合成功添加元素才返回true，否则说明这个c已经输出过了
                // ret = [7TI]
                // 当Set中存在了已有元素，如I，当再次调用add方法向Set中添加元素时，无法添加，return false
                // ret就起了输出去重的作用
                if (ret.add(c)) {
                    System.out.print(c);
                }
            }
        }
        // 输出带换行
        System.out.println();
    }
}